<!DOCTYPE html>
<html>

<head>
	<meta charset="utf-8">
	<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
	<meta name="theme-color" content="#33474d">
	<title>失落的乐章</title>
	<link rel="stylesheet" href="/css/style.css" />
	
      <link rel="alternate" href="/atom.xml" title="失落的乐章" type="application/atom+xml">
    
</head>

<body>

	<header class="header">
		<nav class="header__nav">
			
				<a href="/archives" class="header__link">Archive</a>
			
				<a href="/tags" class="header__link">Tags</a>
			
				<a href="/atom.xml" class="header__link">RSS</a>
			
		</nav>
		<h1 class="header__title"><a href="/">失落的乐章</a></h1>
		<h2 class="header__subtitle">技术面前，永远都是学生。</h2>
	</header>

	<main>
		
	<span class="different-posts different-posts_earlier">📖 <a href="/page/41">earlier posts</a> 📖</span>




	<article>
	
		<h1><a href="/2017/10/12/Apache/60. apache的keepalive和keepalivetimeout/">apache的keepalive和keepalivetimeout</a></h1>
	
	<div class="article__infos">
		<span class="article__date">2017-10-12</span><br />
		
		
			<span class="article__tags">
			  	<a class="article__tag-link" href="/tags/Apache/">Apache</a> <a class="article__tag-link" href="/tags/LAMP/">LAMP</a>
			</span>
		
	</div>

	

	
		<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;在APACHE的httpd.conf中，KeepAlive指的是保持连接活跃，类似于Mysql的永久连接。换一句话说，如果将KeepAlive设置为On，那么来自同一客户端的请求就不需要再一次连接，避免每次请求都要新建一个连接而加重服务器的负担。     </p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;KeepAlive的连接活跃时间当然是受KeepAliveTimeOut限制的。如果第二次请求和第一次请求之间超过KeepAliveTimeOut的时间的话，第一次连接就会中断，再新建第二个连接。    </p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;所以，一般情况下，图片较多的网站应该把KeepAlive设为On。但是KeepAliveTimeOut应该设置为多少秒就是一个值得讨论的问题了。    </p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;如果KeepAliveTimeOut设置的时间过短，例如设置为1秒，那么APACHE就会频繁的建立新连接，当然会耗费不少的资源；反过来，如果KeepAliveTimeOut设置的时间过长，例如设置为300秒，那么APACHE中肯定有很多无用的连接会占用服务器的资源，也不是一件好事。    </p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;所以，到底要把KeepAliveTimeOut设置为多少，要看网站的流量、服务器的配置而定。    </p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;其实，这和MySql的机制有点相似，KeepAlive相当于mysql_connec</p>

	

	

</article>




	<article>
	
		<h1><a href="/2017/10/12/Apache/6. apache加入chkconfig/">apache加入chkconfig</a></h1>
	
	<div class="article__infos">
		<span class="article__date">2017-10-12</span><br />
		
		
			<span class="article__tags">
			  	<a class="article__tag-link" href="/tags/Apache/">Apache</a> <a class="article__tag-link" href="/tags/LAMP/">LAMP</a>
			</span>
		
	</div>

	

	
		<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;第一步：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">cp /usr/<span class="built_in">local</span>/apache2/bin/apachectl /etc/init.d/httpd</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;第二步：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">vim /etc/init.d/httpd</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;在第一行#!/bin/sh下增加两行文字</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div></pre></td><td class="code"><pre><div class="line"><span class="comment"># chkconfig: 35 70 30</span></div><div class="line"><span class="comment"># description: Apache</span></div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;保存退出</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;第三步：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">chkconfig --level 35 httpd on</div></pre></td></tr></table></figure>
	

	

</article>




	<article>
	
		<h1><a href="/2017/10/12/Apache/59. apache 限制某些目录不能访问通过rewrite实现/">apache 限制某些目录不能访问通过rewrite实现</a></h1>
	
	<div class="article__infos">
		<span class="article__date">2017-10-12</span><br />
		
		
			<span class="article__tags">
			  	<a class="article__tag-link" href="/tags/Apache/">Apache</a> <a class="article__tag-link" href="/tags/LAMP/">LAMP</a>
			</span>
		
	</div>

	

	
		<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;deny allow肯定是可以实现的，但是这个必须指定准确的目录，如果有很多个目录，但是都包含某个名字，比如</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div></pre></td><td class="code"><pre><div class="line">bbs.1.com/1/tmp/123.html</div><div class="line"></div><div class="line">bbs.1.com/2/tmp/123.html</div><div class="line"></div><div class="line">bbs.1.com/3/1/2/tmp/123.html</div><div class="line"></div><div class="line">……</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;如果有很多，需要逐一去定义Directory 模块，这显然很麻烦，使用rewrite模块的 REQUEST_URI 就可以很容易实现。</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div></pre></td><td class="code"><pre><div class="line">RewriteEngine on</div><div class="line">RewriteCond %&#123;REQUEST_URI&#125; ^.*/tmp/* [NC]</div><div class="line">RewriteRule .* - [F]</div></pre></td></tr></table></figure>

	

	

</article>




	<article>
	
		<h1><a href="/2017/10/12/Apache/58. apache的rewrite规则/">apache的rewrite规则</a></h1>
	
	<div class="article__infos">
		<span class="article__date">2017-10-12</span><br />
		
		
			<span class="article__tags">
			  	<a class="article__tag-link" href="/tags/Apache/">Apache</a> <a class="article__tag-link" href="/tags/LAMP/">LAMP</a>
			</span>
		
	</div>

	

	
		<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;rewrite的规则：   </p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div></pre></td><td class="code"><pre><div class="line">&lt;IfModule mod_rewrite.c&gt;</div><div class="line">      RewriteEngine on</div><div class="line">      RewriteCond %&#123;HTTP_USER_AGENT&#125;  ^.*Firefox/4.0* [NC,OR]</div><div class="line">      RewriteCond %&#123;HTTP_USER_AGENT&#125;  ^.*Tomato Bot/1.0* [NC]</div><div class="line">      RewriteCond   %&#123;REQUEST_URI&#125; !^/404*</div><div class="line">      RewriteRule  .*  /404.html </div><div class="line">    &lt;/IfModule&gt;</div><div class="line">   &lt;IfModule mod_rewrite.c&gt;</div><div class="line">        RewriteEngine on</div><div class="line">        RewriteCond %&#123;HTTP_USER_AGENT&#125;  ^*Firefox/4.0* [NC,OR]</div><div class="line">        RewriteCond %&#123;HTTP_USER_AGENT&#125;  ^*Tomato Bot/1.0* [NC]</div><div class="line">        RewriteRule  .*  -  [F]</div><div class="line">    &lt;/IfModule&gt;</div></pre></td></tr></table></figure>
<ul>
<li>RewriteEngine on                     #打开rewirte功能</li>
<li>RewriteCond %{变量} 正则 [标志]</li>
<li>RewriteRule 正则1  正则2</li>
<li>正则1一般是从www.<em>*</em>.com/这个以后开始的</li>
<li><code>- [F]</code>:   这里的-表示替换</li>
</ul>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;标志：</p>
<ol>
<li><a href="force redirect">R=301</a> 强制外部重定向<br>强制在替代字符串加上<a href="http://thishost[:thisport]/前缀重定向到外部的URL.如果code不指定，将用缺省的302" target="_blank" rel="external">http://thishost[:thisport]/前缀重定向到外部的URL.如果code不指定，将用缺省的302</a> HTTP状态码。</li>
<li>[F]禁用URL,返回403HTTP状态码。<br>30 <a href="force URL to be gone">G</a> 强制URL为GONE，返回410HTTP状态码。</li>
<li><a href="force proxy">P</a> 强制使用代理转发。</li>
<li><a href="last rule">L</a> 表明当前规则是最后一条规则，停止分析以后规则的重写。</li>
<li><a href="next round">N</a> 重新从第一条规则开始运行重写过程。</li>
<li><a href="chained with next rule">C</a> 与下一条规则关联</li>
</ol>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;如果规则匹配则正常处理，该标志无效，如果不匹配，那么下面所有关联的规则都跳过。</p>
<ol>
<li>[T]=MIME-type(force MIME type) </li>
<li>[NS] (used only if no internal sub-request) 只用于不是内部子请求</li>
<li><a href="no case">NC</a> 不区分大小写</li>
<li><a href="query string append">QSA</a> 追加请求字符串</li>
<li><a href="no URI escaping of output">NE</a> 不在输出转义特殊字符</li>
</ol>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;例如：RewriteRule /foo/(.*) /bar?arg=P1\%3d$1 [R,NE] 将能正确的将/foo/zoo转换成/bar?arg=P1=zed</p>
<ol>
<li><a href="pass through to next handler">PT</a> 传递给下一个处理</li>
</ol>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;例如：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div></pre></td><td class="code"><pre><div class="line">RewriteRule ^/abc(.*) /def<span class="variable">$1</span> [PT] <span class="comment"># 将会交给/def规则处理</span></div><div class="line">   Alias /def /ghi</div></pre></td></tr></table></figure>
<ol>
<li><a href="skip next rule(s">S=num</a>) 跳过num条规则</li>
<li><a href="set environment variable">E=VAR:VAL</a> 设置环境变量</li>
<li>[OR]     或者           两个RewriteCond 之间什么都不写就是     且</li>
</ol>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;变量：</p>
<ul>
<li>%{HTTP_USER_AGENT}      表示：访问的user_agent</li>
<li>%{HTTP_HOST}    表示：当前访问的网址，只是指前缀部分，格式是www.xxx.com不包括“<a href="http://”和“/”" target="_blank" rel="external">http://”和“/”</a></li>
<li>%{REQUEST_URI}     表示：表示访问的相对地址，就是相对根目录的地址，就是域名/后面的成分，格式上包括最前面的“/”，</li>
</ul>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;www.123.com/xiang/1.html</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;RewriteRule:</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">RewriteRule ^/(.*)$ http://www.123.com/<span class="variable">$1</span> [R=301,L]</div></pre></td></tr></table></figure>

	

	

</article>




	<article>
	
		<h1><a href="/2017/10/12/Apache/57. apache 开启压缩功能/">apache 开启压缩功能</a></h1>
	
	<div class="article__infos">
		<span class="article__date">2017-10-12</span><br />
		
		
			<span class="article__tags">
			  	<a class="article__tag-link" href="/tags/Apache/">Apache</a> <a class="article__tag-link" href="/tags/LAMP/">LAMP</a>
			</span>
		
	</div>

	

	
		<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;这里的压缩并不是对网站的图片压缩，而是对普通的静态文件，诸如html, js, css 等元素压缩。不要小看这个压缩功能，如果一个网站的请求量很大的话，这样可以节省海量带宽，在我国带宽资源非常昂贵，所以小小的一个压缩功能可以为企业节省不少的成本呢！下面就来看看如何配置它？</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;首先，需要看一下我们的apache是否支持压缩功能。 </p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">[root@lamp ~]<span class="comment"># /usr/local/apache2/bin/apachectl -l</span></div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;看看是否有mod_deflate</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div><div class="line">17</div><div class="line">18</div><div class="line">19</div><div class="line">20</div><div class="line">21</div><div class="line">22</div><div class="line">23</div><div class="line">24</div><div class="line">25</div><div class="line">26</div><div class="line">27</div><div class="line">28</div><div class="line">29</div></pre></td><td class="code"><pre><div class="line">[root@lamp ~]<span class="comment"># /usr/local/apache2/bin/apachectl -l</span></div><div class="line">Compiled <span class="keyword">in</span> modules:</div><div class="line">core.c</div><div class="line">mod_authn_file.c</div><div class="line">mod_authn_default.c</div><div class="line">mod_authz_host.c</div><div class="line">mod_authz_groupfile.c</div><div class="line">mod_authz_user.c</div><div class="line">mod_authz_default.c</div><div class="line">mod_auth_basic.c</div><div class="line">mod_include.c</div><div class="line">mod_filter.c</div><div class="line">mod_log_config.c</div><div class="line">mod_env.c</div><div class="line">mod_setenvif.c</div><div class="line">mod_version.c</div><div class="line">prefork.c</div><div class="line">http_core.c</div><div class="line">mod_mime.c</div><div class="line">mod_status.c</div><div class="line">mod_autoindex.c</div><div class="line">mod_asis.c</div><div class="line">mod_cgi.c</div><div class="line">mod_negotiation.c</div><div class="line">mod_dir.c</div><div class="line">mod_actions.c</div><div class="line">mod_userdir.c</div><div class="line">mod_alias.c</div><div class="line">mod_so.c</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;如果这里没有，那继续看一下。下面有没有 mod_deflate.so 这个文件 </p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div></pre></td><td class="code"><pre><div class="line">[root@lamp ~]<span class="comment"># ls /usr/local/apache2/modules/</span></div><div class="line">httpd.exp libphp5.so mod_deflate.so mod_expires.so mod_rewrite.so</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;如果这里也没有，那说明你的apache不支持压缩，需要重编译一下，或者扩展形式安装，或者重新编译apache, 需要在编译的时候，加上  <code>--enable-deflate=shared</code> </p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;好，如果你的apache有了deflate这个模块支持，也就支持了压缩功能。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;下面该配置httpd.conf 了。</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">[root@lamp ~]<span class="comment"># vim /usr/local/apache2/conf/httpd.conf</span></div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;在httpd.conf 中增加 ：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">LoadModule deflate_module modules/mod_deflate.so</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;然后再增加如下配置：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div></pre></td><td class="code"><pre><div class="line">&lt;ifmodule mod_deflate.c&gt;</div><div class="line">DeflateCompressionLevel 6 <span class="comment">#6是压缩级别，可以选择1-9</span></div><div class="line">AddOutputFilterByType DEFLATE text/plain</div><div class="line">AddOutputFilterByType DEFLATE text/html</div><div class="line">AddOutputFilterByType DEFLATE text/xml</div><div class="line">AddOutputFilterByType DEFLATE text/css</div><div class="line">AddOutputFilterByType DEFLATE text/JavaScript</div><div class="line">AddOutputFilterByType DEFLATE application/xhtml+xml</div><div class="line">AddOutputFilterByType DEFLATE application/xml</div><div class="line">AddOutputFilterByType DEFLATE application/rss+xml</div><div class="line">AddOutputFilterByType DEFLATE application/atom_xml</div><div class="line">AddOutputFilterByType DEFLATE application/x-javascript</div><div class="line">AddOutputFilterByType DEFLATE application/x-httpd-PHP</div><div class="line">AddOutputFilterByType DEFLATE image/svg+xml</div><div class="line">&lt;ifmodule&gt;</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<strong>为什么要指定文件类型来压缩？</strong></p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;答：压缩也是要消耗cpu资源的，图片/视频等文件，压缩效果也不好，一般压缩文本格式。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;另外上述代码也可以根据实际情况删减。</p>

	

	

</article>




	<article>
	
		<h1><a href="/2017/10/12/Apache/56. apache rewrite 出现死循环/">apache rewrite 出现死循环</a></h1>
	
	<div class="article__infos">
		<span class="article__date">2017-10-12</span><br />
		
		
			<span class="article__tags">
			  	<a class="article__tag-link" href="/tags/Apache/">Apache</a> <a class="article__tag-link" href="/tags/LAMP/">LAMP</a>
			</span>
		
	</div>

	

	
		<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;我的一条规则</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">RewriteRule ^(.*) /111/<span class="variable">$1</span> [R,L]</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;使用curl测试，没有问题，但是使用浏览器访问时，出现了无限循环。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;本来访问的是 www.111.com 结果变成了  www.111.com/111/111/111/….. </p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;虽然在最后加了 [L] 依然不管用，可能apache还是不够智能，一直满足条件就一直去匹配，一直去跳转。最后没招了只能再加一个条件。</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div></pre></td><td class="code"><pre><div class="line">RewriteCond %&#123;REQUEST_URI&#125; !^/111</div><div class="line">RewriteRule ^(.*) /111/<span class="variable">$1</span> [R,L]</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;这样就不再循环了。</p>

	

	

</article>




	<article>
	
		<h1><a href="/2017/10/12/Apache/55. rewirete规则不生效/">rewirete规则不生效</a></h1>
	
	<div class="article__infos">
		<span class="article__date">2017-10-12</span><br />
		
		
			<span class="article__tags">
			  	<a class="article__tag-link" href="/tags/Apache/">Apache</a> <a class="article__tag-link" href="/tags/LAMP/">LAMP</a>
			</span>
		
	</div>

	

	
		<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;在虚拟主机中，配置了rewirete规则</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div></pre></td><td class="code"><pre><div class="line">RewriteCond %&#123;REQUEST_FILENAME&#125; !-f</div><div class="line">RewriteRule !\.(js|ico|gif|jpg|png|css|xml|swf)$ /index.php</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;测试N遍一直不生效。google了好久，发现一篇文章说是如果在虚拟主机配置 %{REQUEST_FILENAME} 时，需要配置绝对路劲，相对路径是不识别的。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;于是，改成如下配置</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div></pre></td><td class="code"><pre><div class="line">RewriteCond %&#123;DOCUMENT_ROOT&#125;%&#123;REQUEST_FILENAME&#125; !-f</div><div class="line">RewriteRule !\.(js|ico|gif|jpg|png|css|xml|swf)$ /index.php</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;成功实现rewrite 规则。</p>

	

	

</article>




	<article>
	
		<h1><a href="/2017/10/12/Apache/54. apache 通过 rewrite 限制某个目录/">apache 通过 rewrite 限制某个目录</a></h1>
	
	<div class="article__infos">
		<span class="article__date">2017-10-12</span><br />
		
		
			<span class="article__tags">
			  	<a class="article__tag-link" href="/tags/Apache/">Apache</a> <a class="article__tag-link" href="/tags/LAMP/">LAMP</a>
			</span>
		
	</div>

	

	
		<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;allow 和  deny 可以去限制网站根目录下的某个子目录， rewrite 也可以实现，配置如下：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div></pre></td><td class="code"><pre><div class="line">[root@lamp ~]<span class="comment"># vim /usr/local/apache2/conf/extra/httpd-vhosts.conf</span></div><div class="line"></div><div class="line"></div><div class="line">&lt;IfModule mod_rewrite.c&gt;</div><div class="line">    RewriteEngine on</div><div class="line">    RewriteCond %&#123;REQUEST_URI&#125; ^.*/tmp/* [NC]</div><div class="line">    RewriteRule .* - [F]</div><div class="line">&lt;/IfModule&gt;</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;这段配置，会把只要是包含 /tmp/ 字样的请求都限制了。</p>

	

	

</article>




	<article>
	
		<h1><a href="/2017/10/12/Apache/53. apache 禁止指定 user_agent/">apache 禁止指定 user_agent</a></h1>
	
	<div class="article__infos">
		<span class="article__date">2017-10-12</span><br />
		
		
			<span class="article__tags">
			  	<a class="article__tag-link" href="/tags/Apache/">Apache</a> <a class="article__tag-link" href="/tags/LAMP/">LAMP</a>
			</span>
		
	</div>

	

	
		<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;user_agent 把它叫做浏览器标识，目前主流的浏览器有 IE、chrome、firefox、360、iphone上的 safari、android手机上的 百度搜索引擎、google搜索引擎等很多，每一种浏览器都有对应的 user_agent 。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;常见 user_agent</p>
<blockquote>
<p>   Opera<br>    Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)     Chrome/39.0.2171.95 Safari/537.36 OPR/26.0.1656.60<br>    Opera/8.0 (Windows NT 5.1; U; en)<br>    Mozilla/5.0 (Windows NT 5.1; U; en; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 9.50<br>    Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 9.50        </p>
<p>   Firefox<br>    Mozilla/5.0 (Windows NT 6.1; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0<br>    Mozilla/5.0 (X11; U; Linux x86_64; zh-CN; rv:1.9.2.10) Gecko/20100922      Ubuntu/10.10 (maverick) Firefox/3.6.10        </p>
<p>   Safari<br>    Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.57.2 (KHTML, like Gecko) Version/5.1.7 Safari/534.57.2         </p>
<p>   chrome<br>    Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)  Chrome/39.0.2171.71 Safari/537.36<br>    Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11<br>    Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.133 Safari/534.16        </p>
<p>   360<br>    Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36<br>    Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko</p>
</blockquote>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;下面针对这些 user_agent 来做一些限制。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;配置如下：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div></pre></td><td class="code"><pre><div class="line">[root@lamp ~]<span class="comment"># vim /usr/local/apache2/conf/extra/httpd-vhosts.conf</span></div><div class="line"></div><div class="line"></div><div class="line">&lt;IfModule mod_rewrite.c&gt;</div><div class="line">    RewriteEngine on</div><div class="line">    RewriteCond %&#123;HTTP_USER_AGENT&#125; ^.*curl.* [NC,OR]</div><div class="line">    RewriteCond %&#123;HTTP_USER_AGENT&#125; ^.*chrome* [NC]</div><div class="line">    RewriteRule .* - [F]</div><div class="line">&lt;/IfModule&gt;</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;同样是使用 rewrite 模块来实现限制指定 user_agent ，在上例中， RewriteRule .<em> -[F] 可以直接禁止访问， rewritecond 用 user_agent 来匹配，</em>curl<em> 表示，只要 user_agent 中含有 curl 就符合条件，其中 </em> 表示任意字符， NC 表示不区分大小写，OR 表示或者，连接下一个以条件。这样就把 curl 和 chrome 浏览器禁止掉了。假如现在要把百度的搜索引擎限制掉，可以加这样一条规则：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div></pre></td><td class="code"><pre><div class="line">RewriteCond %&#123;HTTP_USER_AGENT&#125; ^*Baiduspider/2.0* [NC]</div><div class="line"> RewriteRule .* - [F]</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;既然后了或者 OR，那有没有并且呢。只要不写 OR 就是并且的意思</p>

	

	

</article>




	<article>
	
		<h1><a href="/2017/10/12/Apache/52. http协议的状态码—400,401,403,404,500,502,503,301,302等常见网页错误代码/">http协议的状态码—400,401,403,404,500,502,503,301,302等常见网页错误代码</a></h1>
	
	<div class="article__infos">
		<span class="article__date">2017-10-12</span><br />
		
		
			<span class="article__tags">
			  	<a class="article__tag-link" href="/tags/Apache/">Apache</a> <a class="article__tag-link" href="/tags/LAMP/">LAMP</a>
			</span>
		
	</div>

	

	
		<h2 id="http协议的状态码"><a href="#http协议的状态码" class="headerlink" title="http协议的状态码"></a>http协议的状态码</h2><h3 id="1xx（临时响应）"><a href="#1xx（临时响应）" class="headerlink" title="1xx（临时响应）"></a>1xx（临时响应）</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;表示临时响应并需要请求者继续执行操作的状态码。</p>
<table>
<thead>
<tr>
<th>状态码</th>
<th>注释</th>
</tr>
</thead>
<tbody>
<tr>
<td>100（继续）</td>
<td>请求者应当继续提出请求。服务器返回此代码表示已收到请求的第一部分，正在等待其余部分。</td>
</tr>
<tr>
<td>101（切换协议）</td>
<td>请求者已要求服务器切换协议，服务器已确认并准备切换。</td>
</tr>
</tbody>
</table>
<h3 id="2xx（成功）"><a href="#2xx（成功）" class="headerlink" title="2xx（成功）"></a>2xx（成功）</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;表示成功处理了请求的状态码。</p>
<table>
<thead>
<tr>
<th>状态码</th>
<th>注释</th>
</tr>
</thead>
<tbody>
<tr>
<td>200（成功）</td>
<td>服务器已成功处理了请求。通常，这表示服务器提供了请求的网页。</td>
</tr>
<tr>
<td>201（已创建）</td>
<td>请求成功并且服务器创建了新的资源。</td>
</tr>
<tr>
<td>202（已接受）</td>
<td>服务器已接受请求，但尚未处理。</td>
</tr>
<tr>
<td>203（非授权信息）</td>
<td>服务器已成功处理了请求，但返回的信息可能来自另一来源。</td>
</tr>
<tr>
<td>204（无内容）</td>
<td>服务器成功处理了请求，但没有返回任何内容。</td>
</tr>
<tr>
<td>205（重置内容）</td>
<td>服务器成功处理了请求，但没有返回任何内容。</td>
</tr>
<tr>
<td>206（部分内容）</td>
<td>服务器成功处理了部分 GET 请求。</td>
</tr>
</tbody>
</table>
<h3 id="3xx（重定向）"><a href="#3xx（重定向）" class="headerlink" title="3xx（重定向）"></a>3xx（重定向）</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;要完成请求，需要进一步操作。通常，这些状态码用来重定向。Google 建议您在每次请求中使用重定向不要超过 5 次。您可以使用网站管理员工具查看一下 Googlebot 在抓取重定向网页时是否遇到问题。诊断下的网络抓取页列出了由于重定向错误导致 Googlebot 无法抓取的网址。</p>
<table>
<thead>
<tr>
<th>状态码</th>
<th>注释</th>
</tr>
</thead>
<tbody>
<tr>
<td>300（多种选择）</td>
<td>针对请求，服务器可执行多种操作。服务器可根据请求者 (user agent) 选择一项操作，或提供操作列表供请求者选择。</td>
</tr>
<tr>
<td>301（永久移动）</td>
<td>请求的网页已永久移动到新位置。服务器返回此响应（对 GET 或 HEAD 请求的响应）时，会自动将请求者转到新位置。</td>
</tr>
<tr>
<td>302（临时移动）</td>
<td>服务器目前从不同位置的网页响应请求，但请求者应继续使用原有位置来响应以后的请求。</td>
</tr>
<tr>
<td>303（查看其他位置）</td>
<td>请求者应当对不同的位置使用单独的 GET 请求来检索响应时，服务器返回此代码。</td>
</tr>
<tr>
<td>304（未修改）</td>
<td>自从上次请求后，请求的网页未修改过。服务器返回此响应时，不会返回网页内容。</td>
</tr>
<tr>
<td>305（使用代理）</td>
<td>请求者只能使用代理访问请求的网页。如果服务器返回此响应，还表示请求者应使用代理。</td>
</tr>
<tr>
<td>307（临时重定向）</td>
<td>服务器目前从不同位置的网页响应请求，但请求者应继续使用原有位置来响应以后的请求。</td>
</tr>
</tbody>
</table>
<h3 id="4xx（请求错误）"><a href="#4xx（请求错误）" class="headerlink" title="4xx（请求错误）"></a>4xx（请求错误）</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;这些状态码表示请求可能出错，妨碍了服务器的处理。</p>
<table>
<thead>
<tr>
<th>状态码</th>
<th>注释</th>
</tr>
</thead>
<tbody>
<tr>
<td>400（错误请求）</td>
<td>服务器不理解请求的语法。</td>
</tr>
<tr>
<td>401（未授权）</td>
<td>请求要求身份验证。对于登录后请求的网页，服务器可能返回此响应。</td>
</tr>
<tr>
<td>403（禁止）</td>
<td>服务器拒绝请求。</td>
</tr>
<tr>
<td>404（未找到）</td>
<td>服务器找不到请求的网页。</td>
</tr>
<tr>
<td>405（方法禁用）</td>
<td>禁用请求中指定的方法。</td>
</tr>
<tr>
<td>406（不接受）</td>
<td>无法使用请求的内容特性响应请求的网页。</td>
</tr>
<tr>
<td>407（需要代理授权）</td>
<td>此状态码与 401（未授权）类似，但指定请求者应当授权使用代理。</td>
</tr>
<tr>
<td>408（请求超时）</td>
<td>服务器等候请求时发生超时。</td>
</tr>
<tr>
<td>409（冲突）</td>
<td>服务器在完成请求时发生冲突。服务器必须在响应中包含有关冲突的信息。</td>
</tr>
<tr>
<td>410（已删除）</td>
<td>如果请求的资源已永久删除，服务器就会返回此响应。</td>
</tr>
<tr>
<td>411（需要有效长度）</td>
<td>服务器不接受不含有效内容长度标头字段的请求。</td>
</tr>
<tr>
<td>412（未满足前提条件）</td>
<td>服务器未满足请求者在请求中设置的其中一个前提条件。</td>
</tr>
<tr>
<td>413（请求实体过大）</td>
<td>服务器无法处理请求，因为请求实体过大，超出服务器的处理能力。</td>
</tr>
<tr>
<td>414（请求的 URI 过长）</td>
<td>请求的 URI（通常为网址）过长，服务器无法处理。</td>
</tr>
<tr>
<td>415（不支持的媒体类型）</td>
<td>请求的格式不受请求页面的支持。</td>
</tr>
<tr>
<td>416（请求范围不符合要求）</td>
<td>如果页面无法提供请求的范围，则服务器会返回此状态码。</td>
</tr>
<tr>
<td>417（未满足期望值）</td>
<td>服务器未满足”期望”请求标头字段的要求。</td>
</tr>
</tbody>
</table>
<h3 id="5xx（服务器错误）"><a href="#5xx（服务器错误）" class="headerlink" title="5xx（服务器错误）"></a>5xx（服务器错误）</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;这些状态码表示服务器在处理请求时发生内部错误。这些错误可能是服务器本身的错误，而不是请求出错。</p>
<table>
<thead>
<tr>
<th>状态码</th>
<th>注释</th>
</tr>
</thead>
<tbody>
<tr>
<td>500（服务器内部错误）</td>
<td>服务器遇到错误，无法完成请求。</td>
</tr>
<tr>
<td>501（尚未实施）</td>
<td>服务器不具备完成请求的功能。例如，服务器无法识别请求方法时可能会返回此代码。</td>
</tr>
<tr>
<td>502（错误网关）</td>
<td>服务器作为网关或代理，从上游服务器收到无效响应。</td>
</tr>
<tr>
<td>503（服务不可用）</td>
<td>服务器目前无法使用（由于超载或停机维护）。通常，这只是暂时状态。</td>
</tr>
<tr>
<td>504（网关超时）</td>
<td>服务器作为网关或代理，但是没有及时从上游服务器收到请求。</td>
</tr>
<tr>
<td>505（HTTP 版本不受支持）</td>
<td>服务器不支持请求中所用的 HTTP 协议版本。</td>
</tr>
</tbody>
</table>

	

	

</article>





	<span class="different-posts">📖 <a href="/page/43">more posts</a> 📖</span>



	</main>

	<footer class="footer">
	<div class="footer-content">
		
	      <div class="footer__element">
	<p>Hi there, <br />welcome to my Blog glad you found it. Have a look around, will you?</p>
</div>

	    
	      <div class="footer__element">
	<h5>Check out</h5>
	<ul class="footer-links">
		<li class="footer-links__link"><a href="/archives">Archive</a></li>
		
		  <li class="footer-links__link"><a href="/atom.xml">RSS</a></li>
	    
		<li class="footer-links__link"><a href="/about">about page</a></li>
		<li class="footer-links__link"><a href="/tags">Tags</a></li>
		<li class="footer-links__link"><a href="/categories">Categories</a></li>
	</ul>
</div>

	    

		<div class="footer-credit">
			<span>© 2017 失落的乐章 | Powered by <a href="https://hexo.io/">Hexo</a> | Theme <a href="https://github.com/HoverBaum/meilidu-hexo">MeiliDu</a></span>
		</div>

	</div>


</footer>



</body>

</html>
